前幾天主要都是在學 Python 的基本語法,今天開始進入這次 30 天自主學習比較重要的部分,也就是讓 Python 開始和網路上的網站互動。
在真正開始寫爬蟲之前,我先了解 HTTP 的基本概念。平常使用瀏覽器開啟網站時,電腦其實會向網站伺服器發送 Request,伺服器收到之後再回傳 Response。瀏覽器收到資料後,才會把 HTML 等內容顯示成我們看到的網頁。
今天我使用 Google Colab 來實作,不需要自己安裝 Python 環境。
首先使用 requests:
import requests
接著設定網址並發送 GET Request:
url = "https://example.com"
response = requests.get(url)
再使用:
print(response.status_code)
查看網站回傳的 Status Code。
這次執行後得到:
200
代表這次 Request 有正常取得回應。
接著我進一步查看網站回傳的內容:
print(response.text[:500])
執行後可以看到網站的 HTML 原始內容。
這是今天比較有感的一個地方,因為以前我看到網站時,只會看到瀏覽器呈現出來的畫面,但透過 Requests 之後,我可以直接把網站的 HTML 抓回 Python 裡面。
我也把昨天學到的 try / except 加進來:
import requests
url = "https://example.com"
try:
response = requests.get(url)
response.raise_for_status()
print("Status Code:", response.status_code)
print(response.text[:500])
except requests.exceptions.RequestException as e:
print("發生網路錯誤:", e)
這樣如果網站連線出現問題,程式就可以進行例外處理,而不是直接停止。
今天的實作讓我第一次真正把 Python 和網路資料連在一起。原本的資料都是自己建立的,今天開始可以從網站取得資料。
目前的流程已經變成:
Python
↓
Requests
↓
HTTP Request
↓
網站
↓
HTTP Response
↓
HTML
不過現在取得的 HTML 還是一整串原始資料,還沒有辦法直接方便地找到商品名稱、價格或其他資訊。